table of contents
SWAPON(2) | Manuel du programmeur Linux | SWAPON(2) |
NOM¶
swapon, swapoff - Activer/désactiver un fichier ou un périphérique de swap.
SYNOPSIS¶
#include <unistd.h>
#include <asm/page.h> /* pour avoir PAGE_SIZE */
#include <sys/swap.h>
int swapon(const char *path, int
swapflags);
int swapoff(const char *path);
DESCRIPTION¶
swapon() active le swap sur le fichier ou le périphérique en mode bloc indiqué dans path. swapoff() arrête le swap sur le fichier ou le périphérique en mode bloc indiqué dans path.
swapon() utilise un argument swapflags. Si cet argument a son bit SWAP_FLAG_PREFER à 1, la nouvelle zone de swap disposera d'une priorité plus élevée que la zone de swap par défaut. La priorité est codée ainsi :
(prio << SWAP_FLAG_PRIO_SHIFT) &
SWAP_FLAG_PRIO_MASK
Cette fonction ne peut être appelée que par un processus privilégié (qui a la capacité CAP_SYS_ADMIN.
Priorité¶
Chaque zone de swap a une priorité, haute ou basse. La priorité par défaut est basse. Parmi les zones de basses priorités, les nouvelles zones sont toujours affectées d'une priorité inférieure à celle des zones précédentes.
Toutes les priorités fixées avec l'argument swapflags sont plus élevées que la priorité par défaut. Elles peuvent prendre n'importe quelle valeur positive ou nulle choisie par l'appelant. Plus la valeur est haute, plus la priorité est élevée.
Les pages de swap sont allouées dans les zones par ordre décroissant de priorité. Pour des zones de priorité différentes, la plus haute sera toujours remplie entièrement avant d'utiliser la zone de priorité plus faible. Si deux ou plus de zones ont la même priorité, et qu'il s'agit de la plus haute priorité disponible, les pages sont allouées en utilisant un algorithme Round-Robin entre elles.
Sur Linux 1.3.6, le noyau suit généralement ces règles, mais il y a parfois des exceptions.
VALEUR RENVOYÉE¶
En cas de réussite, zéro est renvoyé, sinon -1 est renvoyé et errno contient le code d'erreur.
ERREURS¶
- EBUSY
- (pour swapon()) Le chemin path est déjà utilisé comme espace d'échange.
- EINVAL
- Le fichier path existe, mais ne référence ni un fichier ordinaire, ni un périphérique en mode bloc. Ou bien, pour swapon(), le fichier indiqué ne contient pas de signature de swap correcte ou réside sur un système de fichiers en mémoire comme tmpfs. Ou bien, pour swapoff(), path n'est pas actuellement un espace d'échange.
- ENFILE
- La limite du nombre total de fichiers ouverts sur le système a été atteinte.
- ENOENT
- path n'existe pas.
- ENOMEM
- Pas assez de mémoire pour démarrer le swapping.
- EPERM
- L'appelant n'a pas la capacité CAP_SYS_ADMIN, ou le nombre maximum de fichiers d'échange est atteint ; voir la section NOTES.
CONFORMITɶ
Ces fonctions sont spécifiques à Linux et ne doivent pas être employées dans des programmes destinés à être portables. Le deuxième argument swapflags a été introduit dans Linux 1.3.2.
NOTES¶
La partition ou le fichier doivent être préparés par mkswap(8).
Le nombre de fichiers d'échanges qui peuvent être utilisés est limité par la constante MAX_SWAPFILES du noyau. Avant le noyau 2.4.10, MAX_SWAPFILES valait 8 ; depuis Linux 2.4.10, il vaut 32. Depuis 2.6.18, cette limite est décrémentée de 2 (et vaut donc 30) si le noyau est compilé avec l'option CONFIG_MIGRATION (qui réserve deux entrées de table de swap pour les possibilités de migration offertes par mbind(2) et migrate_pages(2)).
VOIR AUSSI¶
COLOPHON¶
Cette page fait partie de la publication 3.23 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse <URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <URL:http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <URL:http://alioth.debian.org/projects/perkamon/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à <perkamon-l10n-fr@lists.alioth.debian.org>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».
22 juin 2007 | Linux |